package com.ylbh.modules.shoptemplate.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ylbh.common.pojo.shoptemplate.dto.CommodityBankDTO;
import com.ylbh.common.pojo.shoptemplate.vo.CommodityBankVO;
import com.ylbh.common.pojo.shoptemplate.vo.ShopClassVO;
import com.ylbh.modules.shoptemplate.entity.ShoppingShopTemplate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 店铺模版
 *
 * @author czx
 * @date 2019-12-20 15:38:32
 */
@Mapper
@Repository
public interface ShoppingShopTemplateMapper extends BaseMapper<ShoppingShopTemplate> {

    /**
     * 店铺模板列表
     * @param page
     * @return
     */
    List<ShoppingShopTemplate> selectShopTemplateList(String keywords, Page<Integer> page);

    /**
     * 删除店铺模板
     * @param ids
     */
    void updateShopTemplateById(@Param(value = "ids") List<Long> ids);

    /**
     * 获取店铺模板下的分类列表
     * @param keywords
     * @param page
     * @return
     */
    List<ShopClassVO> selectShopClassListById(String keywords, Page<Integer> page);

    /**
     * 获取店铺模板下的分类详情
     * @param id
     * @return
     */
    ShopClassVO selectShopClassDetailsById(Long id);

    /**
     * 修改店铺模板下的分类详情
     * @param shopClassVO
     */
    void updateShopClassDetailsById(@Param(value = "shopClassVO") ShopClassVO shopClassVO);

    /**
     * 新增店铺模板下的分类
     * @param shopClassVO
     */
    void insertShopClass(@Param(value = "shopClassVO") ShopClassVO shopClassVO);

    /**
     * 删除店铺模板下的分类
     * @param ids
     */
    void updateShopClassById(@Param(value = "ids") List<Long> ids);

    /**
     * 删除店铺和商品库的中间表数据
     * @param id
     */
    void deleteShopGoodsById(Long id);

    /**
     * 新增店铺模板
     * @param shoppingShopTemplate
     */
    void insertShopTemplate(@Param(value = "shoppingShopTemplate") ShoppingShopTemplate shoppingShopTemplate);

    /**
     * 店铺模板详情
     * @param id
     * @return
     */
    ShoppingShopTemplate selectShopTemplateInfoById(Long id);

    /**
     * 修改店铺模板
     * @param dto
     */
    void updateShopTemplateDetailsById(@Param(value = "dto") ShoppingShopTemplate dto);

    /**
     * 商品库商品
     * @param commodityBankDTO
     * @param page
     * @return
     */
    List<CommodityBankVO> selectCommodityBank(@Param(value = "commodityBankDTO") CommodityBankDTO commodityBankDTO, Page<Integer> page);

    /**
     * 添加商品到模板分类
     * @param id
     * @param goodsId
     */
    void insertShopClassGoods(String id, String goodsId);

    /**
     * 店铺商品列表
     * @param id
     * @param page
     * @return
     */
    List<CommodityBankVO> selectShopClassGoodsList(String id, Page<Integer> page);

    /**
     * 删除分类下商品
     * @param id
     * @param goodsIds
     */
    void deleteShopClassGoodsByShopIdAndGoodsId(@Param(value = "id") String id, @Param(value = "goodsIds") List<String> goodsIds);

    /**
     * 店铺模板启用
     * @param id
     * @param type
     */
    void updateShopTemplateStateById(String id, Integer type);
}
